home *** CD-ROM | disk | FTP | other *** search
/ Workbench Design / WB Collection.iso / workbench werkzeuge / icon tools / deft ii / sources / prefsfile.em < prev    next >
Text File  |  1996-04-07  |  4KB  |  181 lines

  1. OPT MODULE
  2.  
  3.  
  4. /*/////////////////////////////////////////////////////////////////////////////
  5. ///////////////////////////////////////////////////////////// Macro files /////
  6. ///////////////////////////////////////////////////////////////////////////////
  7. MACROS 'MUI.pma'
  8. */
  9.  
  10.  
  11. ->*****
  12. ->** External modules
  13. ->*****
  14. MODULE 'libraries/mui'
  15. MODULE 'tools/boopsi'
  16. MODULE 'utility/tagitem'
  17.  
  18. MODULE '*Locale'
  19. MODULE '*Defs'
  20. MODULE '*GUI_MUIB'
  21. MODULE '*Errors'
  22.  
  23.  
  24. ->*****
  25. ->** Error handling
  26. ->*****
  27. RAISE    "MEM"    IF    ParsePatternNoCase()    =    -1
  28.  
  29.  
  30. ->*****
  31. ->** Global variables
  32. ->*****
  33. EXPORT DEF deftII    :    PTR TO obj_app
  34. EXPORT DEF cat        :    PTR TO catalog_DeftII
  35. EXPORT DEF modified    :    LONG
  36.  
  37.  
  38. /*****************************************************************/
  39. /* The given string pointer is modified to point the next string */
  40. /*****************************************************************/
  41. PROC next_string( string_ptr_ptr : PTR TO LONG )
  42.  
  43.     ^string_ptr_ptr := ^string_ptr_ptr + StrLen( ^string_ptr_ptr ) + 1
  44.  
  45. ENDPROC
  46.  
  47.  
  48. /******************************/
  49. /* Loads the preferences file */
  50. /******************************/
  51. EXPORT PROC load_prefs()
  52.  
  53.     DEF prefs_file , prefs_file_length , prefs_file_adr
  54.     DEF string_ptr : PTR TO CHAR
  55.     DEF def_tool : PTR TO default_tool
  56.     DEF pattern_length
  57.  
  58.     prefs_file := Open( 'PROGDIR:Deft II.prefs' , OLDFILE )
  59.  
  60.     IF prefs_file <> NIL
  61.  
  62.         prefs_file_length := FileLength( 'PROGDIR:Deft II.prefs' )
  63.         prefs_file_adr := NewR( prefs_file_length )
  64.         Read( prefs_file , prefs_file_adr , prefs_file_length )
  65.         string_ptr := prefs_file_adr
  66.  
  67.         IF StrCmp( string_ptr , 'DeftII_save_format_v1.0' )
  68.  
  69.             next_string( {string_ptr} )
  70.  
  71.             domethod( deftII.app , [ MUIM_MultiSet , MUIA_List_Quiet , MUI_TRUE ,
  72.                     deftII.lv_paths , deftII.lv_default_tools , NIL ] )
  73.  
  74.             WHILE Char( string_ptr ) <> 0
  75.  
  76.                 domethod( deftII.lv_paths , [ MUIM_List_InsertSingle , string_ptr , MUIV_List_Insert_Sorted ] )
  77.                 next_string( {string_ptr} )
  78.  
  79.             ENDWHILE
  80.  
  81.             INC string_ptr
  82.  
  83.             WHILE Char( string_ptr ) <> 0
  84.  
  85.                 NEW def_tool
  86.  
  87.                 def_tool.old := String( StrLen( string_ptr ) )
  88.                 StrCopy( def_tool.old , string_ptr , ALL )
  89.  
  90.                 def_tool.old_raw := String ( StrLen( string_ptr ) + 2 )
  91.                 StringF( def_tool.old_raw , '\ei\s' , string_ptr )
  92.  
  93.                 def_tool.pattern := FastNew( pattern_length := StrLen( def_tool.old ) * 2 + 2 )
  94.                 IF ParsePatternNoCase( def_tool.old , def_tool.pattern , pattern_length ) = 0 THEN def_tool.pattern := NIL
  95.  
  96.                 next_string( {string_ptr} )
  97.  
  98.                 def_tool.new := String( StrLen( string_ptr ) )
  99.                 StrCopy( def_tool.new , string_ptr , ALL )
  100.  
  101.                 domethod( deftII.lv_default_tools , [ MUIM_List_InsertSingle , def_tool , MUIV_List_Insert_Sorted ] )
  102.  
  103.                 next_string( {string_ptr} )
  104.  
  105.             ENDWHILE
  106.  
  107.             domethod( deftII.app , [ MUIM_MultiSet , MUIA_List_Quiet , FALSE ,
  108.                     deftII.lv_default_tools , deftII.lv_paths , NIL ] )
  109.  
  110.         ELSE
  111.  
  112.             deftII_error( cat.msg_Wrong_Prefs_File.getstr() )
  113.  
  114.         ENDIF
  115.  
  116.         Dispose( prefs_file_adr )
  117.         Close( prefs_file )
  118.  
  119.     ELSE
  120.  
  121.         deftII_error( cat.msg_Missing_Prefs_File.getstr() )
  122.  
  123.     ENDIF
  124.  
  125.     modified := FALSE
  126.  
  127. ENDPROC
  128.  
  129.  
  130. /******************************/
  131. /* Saves the preferences file */
  132. /******************************/
  133. EXPORT PROC save_prefs( error_messages )
  134.  
  135.     DEF error_buf[ 81 ] : ARRAY OF CHAR , prefs_file
  136.     DEF path_str : PTR TO CHAR
  137.     DEF def_tool : PTR TO default_tool
  138.     DEF i = 0 , return = 0
  139.  
  140.     prefs_file := Open( 'PROGDIR:Deft II.prefs' , NEWFILE )
  141.  
  142.     IF prefs_file <> NIL
  143.  
  144.         Fputs( prefs_file , 'DeftII_save_format_v1.0' ) ; FputC( prefs_file , 0 )
  145.  
  146.         REPEAT
  147.  
  148.             domethod( deftII.lv_paths , [ MUIM_List_GetEntry , i++ , {path_str} ] )
  149.             IF path_str <> NIL THEN Fputs( prefs_file , path_str )
  150.             FputC( prefs_file , 0 )
  151.  
  152.         UNTIL path_str = NIL
  153.  
  154.         i := 0
  155.  
  156.         REPEAT
  157.  
  158.             domethod( deftII.lv_default_tools , [ MUIM_List_GetEntry , i++ , {def_tool} ] )
  159.             IF def_tool <> NIL
  160.  
  161.                 Fputs( prefs_file , def_tool.old ) ; FputC( prefs_file , 0 )
  162.                 Fputs( prefs_file , def_tool.new )
  163.  
  164.             ENDIF
  165.             FputC( prefs_file , 0 )
  166.  
  167.         UNTIL def_tool = NIL
  168.  
  169.         Close( prefs_file )
  170.         modified := FALSE
  171.  
  172.     ELSE
  173.  
  174.         Fault( IoErr() , NIL , error_buf , 80 )
  175.         IF error_messages THEN deftII_error( error_buf )
  176.         return := 50
  177.  
  178.     ENDIF
  179.  
  180. ENDPROC return
  181.